package com.xiaoyg.task;

import com.rabbitmq.client.*;

import java.io.IOException;

/**
 * @author xiaoyg
 * @Title: Task
 * @ProjectName rabbitmq-task
 * @Description: TODO
 * @date 2018/12/316:54
 */
public class Task {

    //队列名称
    private final static String TASK_QUEUE_NAME = "task_queue_name";

    public static void main(String[] args) {

        //创建连接到RabbitMQ
        ConnectionFactory connectionFactory = new ConnectionFactory();
        //设置RabbitMQ所在主机的IP或者主机名
        connectionFactory.setHost("192.168.8.129");
        //制定用户和密码
        connectionFactory.setUsername("admin");
        connectionFactory.setPassword("123456");
        //指定端口
        connectionFactory.setPort(AMQP.PROTOCOL.PORT);
        //创建一个连接
        try {
            Connection connection = connectionFactory.newConnection();
            //创建一个频道
            Channel channel = connection.createChannel();

            //设置消息持久化  RabbitMQ不允许使用不同的参数重新定义一个队列，所以已经存在的队列，我们无法修改其属性。
            boolean durable = true;

            //指定一个队列
            channel.queueDeclare(TASK_QUEUE_NAME,durable,false,false,null);

            //发送10条消息，依次在消息后面附加1-10个点
            for (int i = 5; i >0 ; i--) {
                String dots = "";
                for (int j = 0; j <=i ; j++) {
                    dots += ".";
                }
                String message = "hello world"+dots+dots.length();

                //MessageProperties.PERSISTENT_TEXT_PLAIN 标识我们的信息为持久化的
                channel.basicPublish("",TASK_QUEUE_NAME, MessageProperties.PERSISTENT_TEXT_PLAIN,message.getBytes());
                System.out.println("send message: '"+message+"'");
            }

            //关闭频道和连接
            channel.close();
            connection.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}
